/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wasolicitudesfiec.consultas;

import java.sql.*;
import entidad.Rol;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

/**
 *
 * @author kabad
 */
public class ConsultasRol {

    private Connection con;

    public Rol nuevoRol(String descripcion, String rol) throws SQLException {
        Rol reg = new Rol();

        PreparedStatement proc = con.prepareStatement(
                "call nuevoRol(?,?) ");
        proc.setString(1, descripcion);
        proc.setString(2, rol);
        ResultSet rs = proc.executeQuery();
        if (rs.next()) {
            reg.setDescripcion(rs.getString(1));
            reg.setIdRol(rs.getInt(2));
            reg.setRol(rs.getString(3));
        } else {
            reg = null;
        }
        return reg;


    }

    public Rol HLnuevoRol(Rol val) throws SQLException {
        return nuevoRol(val.getDescripcion(), val.getRol());
    }

    public Rol leerRol(int idRol) throws SQLException {
        Rol reg = new Rol();

        PreparedStatement proc = con.prepareStatement(
                "call leerRol(?) ");
        proc.setInt(1, idRol);
        ResultSet rs = proc.executeQuery();
        if (rs.next()) {
            reg.setDescripcion(rs.getString(1));
            reg.setIdRol(rs.getInt(2));
            reg.setRol(rs.getString(3));
        } else {
            reg = null;
        }
        return reg;


    }

    public Rol HLleerRol(Rol val) throws SQLException {
        return leerRol(val.getIdRol());
    }

    public Vector<Rol> leerVariosRol() throws SQLException {
        Vector<Rol> datos = new Vector<Rol>();
        Rol reg;

        PreparedStatement proc = con.prepareStatement(
                "call leerVariosRol() ");
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Rol();
            reg.setDescripcion(rs.getString(1));
            reg.setIdRol(rs.getInt(2));
            reg.setRol(rs.getString(3));
            datos.add(reg);
        }//end while

        return datos;


    }

    public Vector<Rol> HLleerVariosRol(Rol val) throws SQLException {
        return leerVariosRol();
    }

    public boolean modificarRol(String descripcion, int idRol, String rol) throws SQLException {
        boolean exitoOperacion = true;

        PreparedStatement proc = con.prepareStatement(
                "call modificarRol(?,?,?) ");
        proc.setString(1, descripcion);
        proc.setInt(2, idRol);
        proc.setString(3, rol);
        proc.execute();
        return exitoOperacion;


    }

    public boolean HLmodificarRol(Rol val) throws SQLException {
        return modificarRol(val.getDescripcion(), val.getIdRol(), val.getRol());
    }

    public boolean eliminarRol(int idRol) throws SQLException {
        boolean exitoOperacion = true;

        PreparedStatement proc = con.prepareStatement(
                "call eliminarRol(?) ");
        proc.setInt(1, idRol);
        proc.execute();
        return exitoOperacion;
    }

    public boolean HLeliminarRol(Rol val) throws SQLException {
        return eliminarRol(val.getIdRol());
    }

    public void setConexion(Connection con) {
        this.con = con;
    }

    public Rol leerRolPorNombre(String nombre, int idRol) throws SQLException {
        Rol reg = new Rol();
        PreparedStatement proc = con.prepareStatement(
                "call leerRolPorNombre(?,?) ");
        proc.setString(1, nombre);
        proc.setInt(2, idRol);
        ResultSet rs = proc.executeQuery();
        if (rs.next()) {
            reg.setDescripcion(rs.getString(1));
            reg.setIdRol(rs.getInt(2));
            reg.setRol(rs.getString(3));
        } else {
            reg = null;
        }
        return reg;
    }

    public Vector<Rol> leerVariosRolPorIdPersona(int idPersona) throws SQLException {
        Vector<Rol> datos = new Vector<Rol>();
        Rol reg;

        PreparedStatement proc = con.prepareStatement(
                "call leerRolesPorIdPersona(?) ");
         proc.setInt(1, idPersona);     
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Rol();
            reg.setDescripcion(rs.getString(1));
            reg.setIdRol(rs.getInt(2));
            reg.setRol(rs.getString(3));
            datos.add(reg);
        }//end while

        return datos;


    }
}// FIN CLASE: ConsultasRol